﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entidad;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace Dao
{
    public class NotaParcialesDao
    {
        private static SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["AcademicoConnectionString"].ConnectionString);
        public static SqlCommand cmd;

        public NotaParcialesDao()
        {
            
        }
        
        public static List<NotaAlumno> ObtenerTodo()
        {
            List<NotaAlumno> listNotaParciales = new List<NotaAlumno>();
            string sql = @"SELECT        TipoNota.descripcion, NotaParciales.nota, NotaParciales.fecha, Alumno.legajo, Alumno.nombre, Alumno.apellido
                                FROM            Alumno INNER JOIN
                         NotaParciales ON Alumno.legajo = NotaParciales.legajo INNER JOIN
                         TipoNota ON NotaParciales.tipoNota = TipoNota.tipoNota";
            
            try
            {
                cn.Open();
                SqlCommand cmd = new SqlCommand(sql, cn);
                SqlDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    NotaAlumno na = new NotaAlumno();
                    na.legajo = (int)dr["legajo"];
                    na.nombre = dr["nombre"].ToString();
                    na.apellido = dr["apellido"].ToString();
                    na.nota = (int)dr["nota"];
                    na.fecha = (DateTime)dr["fecha"];
                    na.tipoNota = (int) dr["tipoNota"];

                    listNotaParciales.Add(na);
                }
                dr.Close();
                cn.Close();
            }
            catch (SqlException ex)
            {
                if (cn.State == ConnectionState.Open)
                    cn.Close();
                throw new ApplicationException("Error BD NotaParciales.\n Problemas:" + ex.Message);
            }
            return listNotaParciales;

        }

        // falta modificar este metodo
        public static NotaAlumno ObtenerPorId(int legajo)
        {
            NotaAlumno na = new NotaAlumno();
            string sql = "select * from NotaParciales where legajo = @Legajo";
            try
            {
                cn.Open();
                cmd = new SqlCommand(sql, cn);
                cmd.Parameters.AddWithValue("@Legajo", legajo);
                SqlDataReader dr = cmd.ExecuteReader();
                if (dr.Read())
                {
                    na.legajo = (int)dr["legajo"];
                    na.codAsignatura = (int)dr["codAsignatura"];
                    na.tipoNota = (int)dr["tipoNota"];
                    na.nota = (int)dr["nota"];
                    na.fecha = (DateTime)dr["fecha"];
                    na.observacion = dr["observacion"].ToString();
                }
                dr.Close();
                cn.Close();
            }
            catch (SqlException ex)
            {
                if (cn.State == ConnectionState.Open)
                    cn.Close();
                throw new ApplicationException("Error BD NotaParciales.\n Problemas:" + ex.Message);
            }
            return na;

        }

        public static void Insertar(NotaAlumno na)
        {

            string sql = "insert into NotaParciales (codAsignatura,tipoNota,nota,fecha,observacion) values (@codAsignatura,@tipoNota,@nota,@fecha,@observacion); select @@Identity as id;";
           
            try
            {
                cn.Open();
                cmd = new SqlCommand(sql, cn);
                cmd.Parameters.AddWithValue("@codAsignatura", na.codAsignatura);
                cmd.Parameters.AddWithValue("@tipoNota", na.tipoNota);
                cmd.Parameters.AddWithValue("@nota", na.nota);
                cmd.Parameters.AddWithValue("@fecha", na.fecha);
                cmd.Parameters.AddWithValue("@observacion", na.observacion);
               
                na.legajo = Convert.ToInt32(cmd.ExecuteScalar());
                cn.Close();
            }
            catch (SqlException ex)
            {
                if (cn.State == ConnectionState.Open)
                    cn.Close();
                throw new ApplicationException("Error BD NotaParciales.\n Problemas:" + ex.Message);
            }
            
        }

        public static void Actualizar(NotaAlumno na)
        {

            string sql = @"update NotaParciales set codAsignatura = @codAsignatura, tipoNota = @tipoNota, nota = @nota, fecha = @fecha, observacion = @observacion
                                             WHERE legajo = @Legajo";
            try
            {
                cn.Open();
                cmd = new SqlCommand(sql, cn);
                cmd.Parameters.AddWithValue("@Legajo", na.legajo);
                cmd.Parameters.AddWithValue("@codAsignatura", na.codAsignatura);
                cmd.Parameters.AddWithValue("@tipoNota", na.tipoNota);
                cmd.Parameters.AddWithValue("@nota", na.nota);
                cmd.Parameters.AddWithValue("@fecha", na.fecha);
                cmd.Parameters.AddWithValue("@observacion", na.observacion);
               
                cmd.ExecuteNonQuery();
                cn.Close();
            }
            catch (SqlException ex)
            {
                if (cn.State == ConnectionState.Open)
                    cn.Close();
                throw new ApplicationException("Error BD NotaParciales.\n Problemas:" + ex.Message);
            }

        }

       
    }
}
